#include <vector>
using namespace std;


class Solution {
public:
//转化思路 -> 找到一个区间，0的个数不超过即可！
    int longestOnes(vector<int>& nums, int k) {
        int left = 0, right = 0, retlen = 0;
        int zeroNum = 0,n = nums.size();
        for(left = 0, right = 0; right < n; ++right){
            //1.先入窗口（1 / 0）
            if(nums[right] == 0) ++zeroNum; 
            while(zeroNum > k){
                //先算当前长度
                retlen = std::max(right - left, retlen);

                //调整窗口变成合法的
                if(nums[left] == 0) --zeroNum;
                ++left;
            }
        }
        //因为可能有一种情况就是，k过大，一直往后走，都没有调整过窗口
        return std::max(right - left, retlen);
    }
};
